
/**
 * HistoryListAdapter.java
 * @author Jason Lu
 * @date 2013-11-4
 * @version 1.0
 */
package com.x52im.mall.logic.shop;

import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.x52im.mall.score.dto.TokenRechangeHistory;
import com.x52im.rbchat.R;
import com.eva.android.widget.AListAdapter2;

/**
 * @author Jason
 *
 */
public class HistoryListAdapter extends AListAdapter2<TokenRechangeHistory>
{

	/** 记录选中的ListView的行索引值以备后用（目前是在：单击、长按2类事件中保存了此索引值）. */
	protected int selectedListViewIndex = -1;

	public HistoryListAdapter(Activity context)
	{
		super(context, R.layout.common_score_layout_recharge_history_list_item);
	}

	@Override
	public View getView(final int position, View convertView, ViewGroup parent)
	{
		TextView viewScoreAmount = null;
		TextView viewAmount = null;
		TextView viewCreateTime = null;

		// ----------------------------------------------------------------------------------------
		// （1）UI初始化
		// 当的item布局实例已经存在（不在存，意味着这个item刚好从不可见区移到可见区时）
		// ** 根据android的列表ui实现，为了节比资源占用，假如列表有100行而可见区显示5行，那么任何时候
		// ** 这个列表中只会有5个item的UI存在，其它的item都是当被转到可见区时自动把自
		// ** 已的数据实时地更新列UI上，以便查看，也就是说item的UI并不是与后台数据一
		// ** 一对应的，所以正如API文档里说的，convertView并不能确保它总能按你的想法保持不为null
		boolean needCreateItem = (convertView == null);
		// 正在操作的列表行的数据集
		final TokenRechangeHistory rowData = listData.get(position);
		if (needCreateItem)
			// 明细item的UI实例化
			convertView = layoutInflater.inflate(itemResId, null);
		viewScoreAmount = (TextView) convertView.findViewById(R.id.common_mall_score_layout_charge_history_scoreAmount);
		viewAmount = (TextView) convertView.findViewById(R.id.common_mall_score_layout_charge_history_amount);
		viewCreateTime = (TextView) convertView.findViewById(R.id.common_mall_score_layout_charge_history_create_time);

		// ----------------------------------------------------------------------------------------
		// （2）增加事件处理器
		// 各操作组件的事件监听器只需要在convertView被实例化时才需要重建（convertView需要被实例化
		// 当然就意味着它上面的所有操作组件都已经重新新建了）
		// ** 关于事件处理器的说明：事件处理器的增加其实可以不这么麻烦，直接每getView一次就给组件new一个处理器，
		// ** 这样做的好处是简单，但显然存在资源浪费（每刷新一次view就新建监听器）。而现在的实现就跟Android的列表
		// ** 实现原理一样，在切换到下一组item前，监听器永远只有一屏item的数量（刷新时只需要即时刷新对应item的数据到
		// ** 它的监听器里），这样就节省了资源开销！
		if (needCreateItem)
		{
			//
		}

		// ----------------------------------------------------------------------------------------
		// （3）
		// 给标签设置值，以供用户查看
		viewCreateTime.setText(rowData.getCreate_time());
		viewScoreAmount.setText(rowData.getHistory_token());
		viewAmount.setText(rowData.getHistory_amount());
		
		return convertView;
	}

	public int getSelectedListViewIndex()
	{
		return selectedListViewIndex;
	}

	public void setSelectedListViewIndex(int selectedListViewIndex)
	{
		this.selectedListViewIndex = selectedListViewIndex;
		// this.notifyDataSetChanged();
	}

}
